package com.zyf.chapter02.structure.adapter.object_adapter;

import com.zyf.chapter02.structure.adapter.class_adapter.Adaptee;
import com.zyf.chapter02.structure.adapter.class_adapter.ITarget;

/**
 * 对象适配器：基于组合
 * <pre>
 * 使用场景：Adapter 接口很多，而且 Adaptee 和 ITarget 接口定义大部分都不相同，则推荐
 * 使用对象适配器，因为组合接口相对于继承更加灵活。
 * Adapter 接口不多则随意选择
 * </pre>
 * @author yifeng
 */
public class Adaptor implements ITarget {
    private Adaptee adaptee;

    public Adaptor(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void f1() {
        adaptee.fa();
    }

    @Override
    public void f2() {
        // 重新实现 f2() ...
    }

    @Override
    public void fc() {
        adaptee.fc();
    }
}
